草庐IT

c++ - OpenGL纹理

全部标签

c - 尝试在 Windows 上使用 cuda

有各种依赖于cuda.h文件和cuda库(特别是ML库)的Go库。每次我尝试在Windows上安装这些库之一时,我都会收到一条错误消息fatalerror:cuda.h:Nosuchfileordirectory//#include我知道我需要做什么(将Cuda库/头文件链接到我要安装的go库),但是,我不确定如何去做,尤其是在Windows上。由于各种原因,我使用GCC而不是MSVC,但即使我尝试使用MSVC,我也遇到了同样的问题。有什么方法可以将cuda编译器/头文件直接链接到我的Go环境,或者我是否需要手动将go/cgo编译器指向保存Cuda头文件的目录,我该怎么做?我试过向一些

c++ - 如何将 CGO 用于具有条件内联函数的头文件?

我目前正在为Capi编写一个Go包装器,其中包含带有此ifdef的header:#ifdef__cplusplus#defineTEST_INLINEinline#else#defineTEST_INLINE#endifTEST_INLINEintcallC_inline(){return1;}不幸的是,我无法更改header,因为它是第三方代码。如果我将-Wl,--allow-multiple-definition传递给链接器,代码可以正常编译,但我认为这是一种不好的做法。所以,我感兴趣的是有没有我可以传递给CGO的标志或技巧来满足#ifdef__cplusplus条件?编译异常:C

opengl - 如何使用 openGL 的 golang 绑定(bind)定义 gl.DrawBuffers COLOR_ATTACHMENTi

使用“github.com/go-gl/gl/v4.5-core/gl”设置color_attachments数组的golang绑定(bind)如下://SpecifiesalistofcolorbufferstobedrawnintofuncDrawBuffers(nint32,bufs*uint32){C.glowDrawBuffers(gpDrawBuffers,(C.GLsizei)(n),(*C.GLenum)(unsafe.Pointer(bufs)))}在C++中你会这样做://Set"renderedTexture"asourcolourattachement#0glF

Opengl模型矩阵拉伸(stretch)顶点

我正在开发一个简单的opengl游戏以了解更多相关信息。但是由于某种原因,当我尝试随时间旋转我的立方体时,它会被拉伸(stretch)。你可以在照片中看到它:我认为这与我的模型矩阵有关,但我不确定。这是我的部分代码:model:=mgl32.Ident4()model=model.Mul4(mgl32.HomogRotate3D(float32(glfw.GetTime())*mgl32.DegToRad(50.0),mgl32.Vec3{0.5,1.0,0.0}))view:=mgl32.Ident4()view=view.Mul4(mgl32.Translate3D(0.0,0.0

opengl - 渲染不同于单 channel 渲染

我已经开始更新我的代码以允许多channel渲染。我相当确定我正在做正确的帧缓冲区,但不知何故我没有得到我想要的结果。我使用的代码基于以下教程:https://learnopengl.com/Advanced-OpenGL/Framebuffers当我渲染到默认缓冲区时,我得到的正是我所期望的:然而,当我将其渲染为非默认帧缓冲区纹理并将其放置在四边形上时,我得到了这个非常令人费解的结果:所以我最初的想法是,我绘制放置非默认帧缓冲区纹理的四边形(跨越窗口所有四个角的四边形)的方式有问题。但是当只渲染那个,启用线框时,我得到的正是我所期望的(以及教程确认我会得到的):所以我认为我的代码可能

c - 如何将返回的 uint8_u 转换为 ARM 中的 GoString?

我使用cgo从Go调用C函数。该函数的返回类型为uint8_u*。我知道它是一个字符串,需要在Go中打印它。我在myFile.go中有以下内容packagemain//#cgoCFLAGS:-g//#include//#include"cLogic.h"import"C"import("fmt""unsafe")funcmain(){myString:="DUMMY"cMyString:=C.CString(myString)deferC.free(unsafe.Pointer(cMyString))cMyInt:=C.int(10)cResult:=C.MyCFunction(cMy

c - 使用 cgo 构建共享对象时导出变量

我想使用带有选项gobuild-buildmode=c-shared的Go/Cgo构建一个.so库。函数导出良好,但我无法导出变量。我需要实现一个API,它通过调用一个void函数来工作,该函数设置各种全局属性的值。像这样:var(Gval1intGval2string//GvalN)funcf(){Gval1=1Gval2="qwerty"}.solib的客户端将运行f();之后,它可以通过寻址变量的名称来获取变量。我怎样才能导出它们?我曾尝试过这样的把戏:golangcgocan'texportvariablesbybuildmodec-shared,但没有成功(示例始终返回0,而

c - 有没有办法在调用 MakeWS2811() 后修改 rpi-ws281x-go 库中 LED 的亮度?

我一直在使用RaspberryPi和Golang来制作一些WS2812LED的动画。我一直在使用rpi-ws281x-go(https://github.com/rpi-ws281x/rpi-ws281x-go)库,它是一个围绕C库(https://github.com/jgarff/rpi_ws281x)的Go包装器。我对C不是很熟悉,更不用说C库的Go包装器了。我可以看到在C代码中,我可以访问和更改每次调用渲染函数时应用的LED的亮度。但是,在Go包装器库中,我看不到访问该变量的方法。我可以看到,当我调用ws2811.MakeWS2811(&opt)时,我可以在opt结构中设置亮度

c - 如何将 Go 绑定(bind)建模为使用 union 的 C 结构?

我目前正在写一个Gowrapper对于libfreefare.libfreefare的API包含以下功能:structmifare_desfire_file_settings{uint8_tfile_type;uint8_tcommunication_settings;uint16_taccess_rights;union{struct{uint32_tfile_size;}standard_file;struct{int32_tlower_limit;int32_tupper_limit;int32_tlimited_credit_value;uint8_tlimited_credi

linux - Go 导致 OpenGL 与 time.Tick 但不是 time.After 发生段错误

我有以下两个文件:bridge.go:packagecube//#cgoLDFLAGS:-lGL-lGLEW-lglfw//#include//intinit(GLFWwindow**);//voidrender(GLFWwindow*);import"C"import("fmt""time")funcInit(){varwindow*_Ctype_GLFWwindowwindowWat:=(*[0]byte)(window)fmt.Printf("Callinginit\n")ifC.init(&windowWat)!=1{return}window=(*_Ctype_GLFWwin